home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vdmath.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  26KB  |  463 lines

  1. /*  VDmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of the data type "double";   real numbers
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VDMATH_H
  12. #define __VDMATH_H
  13.  
  14. #ifndef __VDSTD_H 
  15. #include <VDstd.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22.  
  23.  
  24. /**************************  Rounding **********************************/
  25.  
  26. int  __vf   VD_round(  dVector  Y, dVector X, ui size );
  27. int  __vf   VD_roundtoBI( biVector Y, dVector X, ui size );
  28. int  __vf   VD_roundtoSI( siVector Y, dVector X, ui size );
  29. int  __vf   VD_roundtoI(  iVector  Y, dVector X, ui size );
  30. int  __vf   VD_roundtoLI( liVector Y, dVector X, ui size );
  31. int  __vf   VD_roundtoQI( qiVector Y, dVector X, ui size );
  32. int  __vf   VD_roundtoUB( ubVector Y, dVector X, ui size );
  33. int  __vf   VD_roundtoUS( usVector Y, dVector X, ui size );
  34. int  __vf   VD_roundtoU(  uVector  Y, dVector X, ui size );
  35. int  __vf   VD_roundtoUL( ulVector Y, dVector X, ui size );
  36.  
  37. int  __vf   VD_floor(  dVector  Y, dVector X, ui size );
  38. int  __vf   VD_floortoBI( biVector Y, dVector X, ui size );
  39. int  __vf   VD_floortoSI( siVector Y, dVector X, ui size );
  40. int  __vf   VD_floortoI(  iVector  Y, dVector X, ui size );
  41. int  __vf   VD_floortoLI( liVector Y, dVector X, ui size );
  42. int  __vf   VD_floortoQI( qiVector Y, dVector X, ui size );
  43. int  __vf   VD_floortoUB( ubVector Y, dVector X, ui size );
  44. int  __vf   VD_floortoUS( usVector Y, dVector X, ui size );
  45. int  __vf   VD_floortoU(  uVector  Y, dVector X, ui size );
  46. int  __vf   VD_floortoUL( ulVector Y, dVector X, ui size );
  47.  
  48. int  __vf   VD_ceil(  dVector  Y, dVector X, ui size );
  49. int  __vf   VD_ceiltoBI( biVector Y, dVector X, ui size );
  50. int  __vf   VD_ceiltoSI( siVector Y, dVector X, ui size );
  51. int  __vf   VD_ceiltoI(  iVector  Y, dVector X, ui size );
  52. int  __vf   VD_ceiltoLI( liVector Y, dVector X, ui size );
  53. int  __vf   VD_ceiltoQI( qiVector Y, dVector X, ui size );
  54. int  __vf   VD_ceiltoUB( ubVector Y, dVector X, ui size );
  55. int  __vf   VD_ceiltoUS( usVector Y, dVector X, ui size );
  56. int  __vf   VD_ceiltoU(  uVector  Y, dVector X, ui size );
  57. int  __vf   VD_ceiltoUL( ulVector Y, dVector X, ui size );
  58.  
  59. int  __vf   VD_chop(  dVector  Y, dVector X, ui size );
  60. int  __vf   VD_choptoBI( biVector Y, dVector X, ui size );
  61. int  __vf   VD_choptoSI( siVector Y, dVector X, ui size );
  62. int  __vf   VD_choptoI(  iVector  Y, dVector X, ui size );
  63. int  __vf   VD_choptoLI( liVector Y, dVector X, ui size );
  64. int  __vf   VD_choptoQI( qiVector Y, dVector X, ui size );
  65. int  __vf   VD_choptoUB( ubVector Y, dVector X, ui size );
  66. int  __vf   VD_choptoUS( usVector Y, dVector X, ui size );
  67. int  __vf   VD_choptoU(  uVector  Y, dVector X, ui size );
  68. int  __vf   VD_choptoUL( ulVector Y, dVector X, ui size );
  69.  
  70. #define     VD_trunc      VD_chop
  71. #define     VD_trunctoBI  VD_choptoBI
  72. #define     VD_trunctoSI  VD_choptoSI
  73. #define     VD_trunctoI   VD_choptoI
  74. #define     VD_trunctoLI  VD_choptoLI
  75. #define     VD_trunctoQI  VD_choptoQI
  76. #define     VD_trunctoUB  VD_choptoUB
  77. #define     VD_trunctoUS  VD_choptoUS
  78. #define     VD_trunctoU   VD_choptoU
  79. #define     VD_trunctoUL  VD_choptoUL
  80.  
  81. #if defined V_HUGE
  82.       #define   VD_roundtoUI   VD_roundtoUL
  83.       #define   VD_floortoUI   VD_floortoUL
  84.       #define   VD_ceiltoUI    VD_ceiltoUL
  85.       #define   VD_choptoUI    VD_choptoUL
  86.       #define   VD_trunctoUI   VD_trunctoUL
  87. #else
  88.       #define   VD_roundtoUI   VD_roundtoU
  89.       #define   VD_floortoUI   VD_floortoU
  90.       #define   VD_ceiltoUI    VD_ceiltoU
  91.       #define   VD_choptoUI    VD_choptoU
  92.       #define   VD_trunctoUI   VD_trunctoU
  93. #endif
  94.  
  95. /************************  Comparisons   ***************************/
  96.  
  97. void __vf   VD_cmp0(    dVector Y, dVector X, ui size );
  98. ui   __vf   VD_cmp_eq0( dVector Y, dVector X, ui size );
  99. ui   __vf   VD_cmp_ne0( dVector Y, dVector X, ui size );
  100. ui   __vf   VD_cmp_le0( dVector Y, dVector X, ui size );
  101. ui   __vf   VD_cmp_lt0( dVector Y, dVector X, ui size );
  102. ui   __vf   VD_cmp_ge0( dVector Y, dVector X, ui size );
  103. ui   __vf   VD_cmp_gt0( dVector Y, dVector X, ui size );
  104.  
  105. ui   __vf   VD_cmp_eq0ind( uiVector Ind, dVector X, ui size );
  106. ui   __vf   VD_cmp_ne0ind( uiVector Ind, dVector X, ui size );
  107. ui   __vf   VD_cmp_le0ind( uiVector Ind, dVector X, ui size );
  108. ui   __vf   VD_cmp_lt0ind( uiVector Ind, dVector X, ui size );
  109. ui   __vf   VD_cmp_ge0ind( uiVector Ind, dVector X, ui size );
  110. ui   __vf   VD_cmp_gt0ind( uiVector Ind, dVector X, ui size );
  111.  
  112. void __vf   VD_cmpC(    dVector Y, dVector X, ui size, double C );
  113. ui   __vf   VD_cmp_eqC( dVector Y, dVector X, ui size, double C );
  114. ui   __vf   VD_cmp_neC( dVector Y, dVector X, ui size, double C );
  115. ui   __vf   VD_cmp_leC( dVector Y, dVector X, ui size, double C );
  116. ui   __vf   VD_cmp_ltC( dVector Y, dVector X, ui size, double C );
  117. ui   __vf   VD_cmp_geC( dVector Y, dVector X, ui size, double C );
  118. ui   __vf   VD_cmp_gtC( dVector Y, dVector X, ui size, double C );
  119.  
  120. ui   __vf   VD_cmp_eqCind( uiVector Ind, dVector X, ui size, double C );
  121. ui   __vf   VD_cmp_neCind( uiVector Ind, dVector X, ui size, double C );
  122. ui   __vf   VD_cmp_leCind( uiVector Ind, dVector X, ui size, double C );
  123. ui   __vf   VD_cmp_ltCind( uiVector Ind, dVector X, ui size, double C );
  124. ui   __vf   VD_cmp_geCind( uiVector Ind, dVector X, ui size, double C );
  125. ui   __vf   VD_cmp_gtCind( uiVector Ind, dVector X, ui size, double C );
  126.  
  127. void __vf   VD_cmpV(    dVector Z, dVector X, dVector Y, ui size );
  128. ui   __vf   VD_cmp_eqV( dVector Z, dVector X, dVector Y, ui size );
  129. ui   __vf   VD_cmp_neV( dVector Z, dVector X, dVector Y, ui size );
  130. ui   __vf   VD_cmp_leV( dVector Z, dVector X, dVector Y, ui size );
  131. ui   __vf   VD_cmp_ltV( dVector Z, dVector X, dVector Y, ui size );
  132. ui   __vf   VD_cmp_geV( dVector Z, dVector X, dVector Y, ui size );
  133. ui   __vf   VD_cmp_gtV( dVector Z, dVector X, dVector Y, ui size );
  134.  
  135. ui   __vf   VD_cmp_eqVind( uiVector Ind, dVector X, dVector Y, ui size );
  136. ui   __vf   VD_cmp_neVind( uiVector Ind, dVector X, dVector Y, ui size );
  137. ui   __vf   VD_cmp_leVind( uiVector Ind, dVector X, dVector Y, ui size );
  138. ui   __vf   VD_cmp_ltVind( uiVector Ind, dVector X, dVector Y, ui size );
  139. ui   __vf   VD_cmp_geVind( uiVector Ind, dVector X, dVector Y, ui size );
  140. ui   __vf   VD_cmp_gtVind( uiVector Ind, dVector X, dVector Y, ui size );
  141.  
  142. ui   __vf   VD_cmp_inclrange0C( dVector Y, dVector X, ui size, double C );
  143. ui   __vf   VD_cmp_exclrange0C( dVector Y, dVector X, ui size, double C );
  144. ui   __vf   VD_cmp_inclrangeCC( dVector Y, dVector X, ui size, double CLo, double CHi );
  145. ui   __vf   VD_cmp_exclrangeCC( dVector Y, dVector X, ui size, double CLo, double CHi );
  146.  
  147. ui   __vf   VD_cmp_inclrange0Cind( uiVector Ind, dVector X, ui size, double C );
  148. ui   __vf   VD_cmp_exclrange0Cind( uiVector Ind, dVector X, ui size, double C );
  149. ui   __vf   VD_cmp_inclrangeCCind( uiVector Ind, dVector X, ui size, double CLo, double CHi );
  150. ui   __vf   VD_cmp_exclrangeCCind( uiVector Ind, dVector X, ui size, double CLo, double CHi );
  151.  
  152.  
  153. /********************  Standard Arithmetics   ***************************/
  154.  
  155. void  __vf  VD_equC( dVector X, ui size, double C );
  156. void  __vf  VD_equV( dVector Y, dVector X, ui size );
  157. void  __vf  VDx_equV( dVector Y, dVector X, ui size, double A, double B );
  158.  
  159. void  __vf  VD_addC(  dVector Y, dVector X, ui size, double C );
  160. void  __vf  VD_subC(  dVector Y, dVector X, ui size, double C );
  161. void  __vf  VD_subrC( dVector Y, dVector X, ui size, double C );
  162. void  __vf  VD_mulC(  dVector Y, dVector X, ui size, double C );
  163. void  __vf  VD_divC(  dVector Y, dVector X, ui size, double C );
  164. void  __vf  VD_divrC( dVector Y, dVector X, ui size, double C );
  165. void  __vf  VDx_divrC( dVector Y, dVector X, ui size, double A, double B, double C );
  166.  
  167. void  __vf  VD_addV(  dVector Z, dVector X, dVector Y, ui size );
  168. void  __vf  VD_subV(  dVector Z, dVector X, dVector Y, ui size );
  169. void  __vf  VD_subrV( dVector Z, dVector X, dVector Y, ui size );
  170. void  __vf  VD_mulV(  dVector Z, dVector X, dVector Y, ui size );
  171. void  __v